<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>Assimp: aiMesh Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Assimp
   &#160;<span id="projectnumber">v3.0 (July 2012)</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="structai_mesh.html#pub-methods">Public Member Functions</a> &#124;
<a href="structai_mesh.html#pub-attribs">Public Attributes</a>  </div>
  <div class="headertitle">
<div class="title">aiMesh Struct Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>A mesh represents a geometry or model with a single material.  
 <a href="structai_mesh.html#details">More...</a></p>

<p><a href="structai_mesh-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a6a4002880c9ec22cc59be3adb3932d17"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a6a4002880c9ec22cc59be3adb3932d17">aiMesh</a> ()</td></tr>
<tr class="memdesc:a6a4002880c9ec22cc59be3adb3932d17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. Initializes all members to 0.  <a href="structai_mesh.html#a6a4002880c9ec22cc59be3adb3932d17"></a><br/></td></tr>
<tr class="memitem:a08b3929786275c3d7c3e25ef2955f6b7"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a08b3929786275c3d7c3e25ef2955f6b7">GetNumColorChannels</a> () const </td></tr>
<tr class="memdesc:a08b3929786275c3d7c3e25ef2955f6b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of vertex color channels the mesh contains.  <a href="structai_mesh.html#a08b3929786275c3d7c3e25ef2955f6b7"></a><br/></td></tr>
<tr class="memitem:a5fe3409af476c6c80b1126f1c1944a9c"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a5fe3409af476c6c80b1126f1c1944a9c">GetNumUVChannels</a> () const </td></tr>
<tr class="memdesc:a5fe3409af476c6c80b1126f1c1944a9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of UV channels the mesh contains.  <a href="structai_mesh.html#a5fe3409af476c6c80b1126f1c1944a9c"></a><br/></td></tr>
<tr class="memitem:ae39d8068a397a34e9d304d35d02396bc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#ae39d8068a397a34e9d304d35d02396bc">HasBones</a> () const </td></tr>
<tr class="memdesc:ae39d8068a397a34e9d304d35d02396bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the mesh contains bones.  <a href="structai_mesh.html#ae39d8068a397a34e9d304d35d02396bc"></a><br/></td></tr>
<tr class="memitem:a770238d33b221f251adeabc45d88eeea"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a770238d33b221f251adeabc45d88eeea">HasFaces</a> () const </td></tr>
<tr class="memdesc:a770238d33b221f251adeabc45d88eeea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the mesh contains faces.  <a href="structai_mesh.html#a770238d33b221f251adeabc45d88eeea"></a><br/></td></tr>
<tr class="memitem:a513ceba10c92675ebdd3f014c40ba04b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a513ceba10c92675ebdd3f014c40ba04b">HasNormals</a> () const </td></tr>
<tr class="memdesc:a513ceba10c92675ebdd3f014c40ba04b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the mesh contains normal vectors.  <a href="structai_mesh.html#a513ceba10c92675ebdd3f014c40ba04b"></a><br/></td></tr>
<tr class="memitem:a938990f4086b25fd25cf6fd1033dedbe"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a938990f4086b25fd25cf6fd1033dedbe">HasPositions</a> () const </td></tr>
<tr class="memdesc:a938990f4086b25fd25cf6fd1033dedbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the mesh contains positions.  <a href="structai_mesh.html#a938990f4086b25fd25cf6fd1033dedbe"></a><br/></td></tr>
<tr class="memitem:acb82fd22d17d7606db6fc35f4d979fc5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#acb82fd22d17d7606db6fc35f4d979fc5">HasTangentsAndBitangents</a> () const </td></tr>
<tr class="memdesc:acb82fd22d17d7606db6fc35f4d979fc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the mesh contains tangent and bitangent vectors It is not possible that it contains tangents and no bitangents (or the other way round).  <a href="structai_mesh.html#acb82fd22d17d7606db6fc35f4d979fc5"></a><br/></td></tr>
<tr class="memitem:aa64469ce561a59c9edd482349125945f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#aa64469ce561a59c9edd482349125945f">HasTextureCoords</a> (unsigned int pIndex) const </td></tr>
<tr class="memdesc:aa64469ce561a59c9edd482349125945f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the mesh contains a texture coordinate set.  <a href="structai_mesh.html#aa64469ce561a59c9edd482349125945f"></a><br/></td></tr>
<tr class="memitem:a8d81f18e0895ac7a3e62aab496f74de9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a8d81f18e0895ac7a3e62aab496f74de9">HasVertexColors</a> (unsigned int pIndex) const </td></tr>
<tr class="memdesc:a8d81f18e0895ac7a3e62aab496f74de9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the mesh contains a vertex color set.  <a href="structai_mesh.html#a8d81f18e0895ac7a3e62aab496f74de9"></a><br/></td></tr>
<tr class="memitem:a55d1eea2210bf95d2871d50fb48765d9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a55d1eea2210bf95d2871d50fb48765d9">~aiMesh</a> ()</td></tr>
<tr class="memdesc:a55d1eea2210bf95d2871d50fb48765d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deletes all storage allocated for the mesh.  <a href="structai_mesh.html#a55d1eea2210bf95d2871d50fb48765d9"></a><br/></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:aca67c5f067cb0d5735611805aadeb696"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structai_anim_mesh.html">aiAnimMesh</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#aca67c5f067cb0d5735611805aadeb696">mAnimMeshes</a></td></tr>
<tr class="memdesc:aca67c5f067cb0d5735611805aadeb696"><td class="mdescLeft">&#160;</td><td class="mdescRight">NOT CURRENTLY IN USE.  <a href="structai_mesh.html#aca67c5f067cb0d5735611805aadeb696"></a><br/></td></tr>
<tr class="memitem:af04bb8da6485a98d2a452ba54b8a1039"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vector3_8h.html#a47f446977120a9ca7d868353aad70b09">aiVector3D</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#af04bb8da6485a98d2a452ba54b8a1039">mBitangents</a></td></tr>
<tr class="memdesc:af04bb8da6485a98d2a452ba54b8a1039"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vertex bitangents.  <a href="structai_mesh.html#af04bb8da6485a98d2a452ba54b8a1039"></a><br/></td></tr>
<tr class="memitem:a7093e3acc0e931682fe899fc68a9dc06"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structai_bone.html">aiBone</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a7093e3acc0e931682fe899fc68a9dc06">mBones</a></td></tr>
<tr class="memdesc:a7093e3acc0e931682fe899fc68a9dc06"><td class="mdescLeft">&#160;</td><td class="mdescRight">The bones of this mesh.  <a href="structai_mesh.html#a7093e3acc0e931682fe899fc68a9dc06"></a><br/></td></tr>
<tr class="memitem:a49e7c2c61db92c3bafdbdb7d88c2cf87"><td class="memItemLeft" align="right" valign="top"><a class="el" href="color4_8h.html#a22423d93be0559285f5f9d895f05f32c">aiColor4D</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a49e7c2c61db92c3bafdbdb7d88c2cf87">mColors</a> [<a class="el" href="mesh_8h.html#a74ea1282873ac4b111b48d2380c26bdc">AI_MAX_NUMBER_OF_COLOR_SETS</a>]</td></tr>
<tr class="memdesc:a49e7c2c61db92c3bafdbdb7d88c2cf87"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vertex color sets.  <a href="structai_mesh.html#a49e7c2c61db92c3bafdbdb7d88c2cf87"></a><br/></td></tr>
<tr class="memitem:a6593ae5a5861f69e2576447054d01053"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structai_face.html">aiFace</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a6593ae5a5861f69e2576447054d01053">mFaces</a></td></tr>
<tr class="memdesc:a6593ae5a5861f69e2576447054d01053"><td class="mdescLeft">&#160;</td><td class="mdescRight">The faces the mesh is constructed from.  <a href="structai_mesh.html#a6593ae5a5861f69e2576447054d01053"></a><br/></td></tr>
<tr class="memitem:aa2807c7ba172115203ed16047ad65f9e"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#aa2807c7ba172115203ed16047ad65f9e">mMaterialIndex</a></td></tr>
<tr class="memdesc:aa2807c7ba172115203ed16047ad65f9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The material used by this mesh.  <a href="structai_mesh.html#aa2807c7ba172115203ed16047ad65f9e"></a><br/></td></tr>
<tr class="memitem:afccf57b16796f2e81f44d824d9b9722d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structai_string.html">aiString</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#afccf57b16796f2e81f44d824d9b9722d">mName</a></td></tr>
<tr class="memdesc:afccf57b16796f2e81f44d824d9b9722d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Name of the mesh.  <a href="structai_mesh.html#afccf57b16796f2e81f44d824d9b9722d"></a><br/></td></tr>
<tr class="memitem:acb909ff2b9aec691fc6b50ec1be2b52f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vector3_8h.html#a47f446977120a9ca7d868353aad70b09">aiVector3D</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#acb909ff2b9aec691fc6b50ec1be2b52f">mNormals</a></td></tr>
<tr class="memdesc:acb909ff2b9aec691fc6b50ec1be2b52f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vertex normals.  <a href="structai_mesh.html#acb909ff2b9aec691fc6b50ec1be2b52f"></a><br/></td></tr>
<tr class="memitem:a1692a300222b32348ae51779df4a697e"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a1692a300222b32348ae51779df4a697e">mNumAnimMeshes</a></td></tr>
<tr class="memdesc:a1692a300222b32348ae51779df4a697e"><td class="mdescLeft">&#160;</td><td class="mdescRight">NOT CURRENTLY IN USE.  <a href="structai_mesh.html#a1692a300222b32348ae51779df4a697e"></a><br/></td></tr>
<tr class="memitem:a0f9d5425b6300e32a842a94f943fd79e"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a0f9d5425b6300e32a842a94f943fd79e">mNumBones</a></td></tr>
<tr class="memdesc:a0f9d5425b6300e32a842a94f943fd79e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of bones this mesh contains.  <a href="structai_mesh.html#a0f9d5425b6300e32a842a94f943fd79e"></a><br/></td></tr>
<tr class="memitem:aeed22ee6963b79548f3877b3c905518e"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#aeed22ee6963b79548f3877b3c905518e">mNumFaces</a></td></tr>
<tr class="memdesc:aeed22ee6963b79548f3877b3c905518e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of primitives (triangles, polygons, lines) in this mesh.  <a href="structai_mesh.html#aeed22ee6963b79548f3877b3c905518e"></a><br/></td></tr>
<tr class="memitem:a635c631a6e66d32989d6b25b2a892d86"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a635c631a6e66d32989d6b25b2a892d86">mNumUVComponents</a> [<a class="el" href="mesh_8h.html#a335874c5058c7f1e866eb953bf192258">AI_MAX_NUMBER_OF_TEXTURECOORDS</a>]</td></tr>
<tr class="memdesc:a635c631a6e66d32989d6b25b2a892d86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specifies the number of components for a given UV channel.  <a href="structai_mesh.html#a635c631a6e66d32989d6b25b2a892d86"></a><br/></td></tr>
<tr class="memitem:ab34b7b5941e6636f1c08f615cbb072ef"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#ab34b7b5941e6636f1c08f615cbb072ef">mNumVertices</a></td></tr>
<tr class="memdesc:ab34b7b5941e6636f1c08f615cbb072ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of vertices in this mesh.  <a href="structai_mesh.html#ab34b7b5941e6636f1c08f615cbb072ef"></a><br/></td></tr>
<tr class="memitem:a99d66ac0a444068c1b252b30265cbf53"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a99d66ac0a444068c1b252b30265cbf53">mPrimitiveTypes</a></td></tr>
<tr class="memdesc:a99d66ac0a444068c1b252b30265cbf53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bitwise combination of the members of the <a class="el" href="mesh_8h.html#ac352902280db7c3bd8ba64c133b7f03f" title="Enumerates the types of geometric primitives supported by Assimp.">aiPrimitiveType</a> enum.  <a href="structai_mesh.html#a99d66ac0a444068c1b252b30265cbf53"></a><br/></td></tr>
<tr class="memitem:aa653683c81c7f7465b09aee18f8d1c22"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vector3_8h.html#a47f446977120a9ca7d868353aad70b09">aiVector3D</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#aa653683c81c7f7465b09aee18f8d1c22">mTangents</a></td></tr>
<tr class="memdesc:aa653683c81c7f7465b09aee18f8d1c22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vertex tangents.  <a href="structai_mesh.html#aa653683c81c7f7465b09aee18f8d1c22"></a><br/></td></tr>
<tr class="memitem:a802e24c0acd3a96ec0b2cd6c21e9ef57"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vector3_8h.html#a47f446977120a9ca7d868353aad70b09">aiVector3D</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a802e24c0acd3a96ec0b2cd6c21e9ef57">mTextureCoords</a> [<a class="el" href="mesh_8h.html#a335874c5058c7f1e866eb953bf192258">AI_MAX_NUMBER_OF_TEXTURECOORDS</a>]</td></tr>
<tr class="memdesc:a802e24c0acd3a96ec0b2cd6c21e9ef57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vertex texture coords, also known as UV channels.  <a href="structai_mesh.html#a802e24c0acd3a96ec0b2cd6c21e9ef57"></a><br/></td></tr>
<tr class="memitem:a65441c89080d9343de64515f74a64415"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vector3_8h.html#a47f446977120a9ca7d868353aad70b09">aiVector3D</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structai_mesh.html#a65441c89080d9343de64515f74a64415">mVertices</a></td></tr>
<tr class="memdesc:a65441c89080d9343de64515f74a64415"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vertex positions.  <a href="structai_mesh.html#a65441c89080d9343de64515f74a64415"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>A mesh represents a geometry or model with a single material. </p>
<p>It usually consists of a number of vertices and a series of primitives/faces referencing the vertices. In addition there might be a series of bones, each of them addressing a number of vertices with a certain weight. Vertex data is presented in channels with each channel containing a single per-vertex information such as a set of texture coords or a normal vector. If a data pointer is non-null, the corresponding data stream is present. From C++-programs you can also use the comfort functions Has*() to test for the presence of various data streams.</p>
<p>A Mesh uses only a single material which is referenced by a material ID. </p>
<dl class="section note"><dt>Note:</dt><dd>The mPositions member is usually not optional. However, vertex positions <em>could</em> be missing if the #AI_SCENE_FLAGS_INCOMPLETE flag is set in <div class="fragment"><div class="line">  <a class="code" href="structai_scene.html#a4091f10bb81e05db00ebc34f40c48f38" title="Any combination of the AI_SCENE_FLAGS_XXX flags.">aiScene::mFlags</a></div>
</div><!-- fragment --> </dd></dl>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a6a4002880c9ec22cc59be3adb3932d17"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">aiMesh::aiMesh </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Default constructor. Initializes all members to 0. </p>

</div>
</div>
<a class="anchor" id="a55d1eea2210bf95d2871d50fb48765d9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">aiMesh::~aiMesh </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Deletes all storage allocated for the mesh. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a08b3929786275c3d7c3e25ef2955f6b7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int aiMesh::GetNumColorChannels </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the number of vertex color channels the mesh contains. </p>

</div>
</div>
<a class="anchor" id="a5fe3409af476c6c80b1126f1c1944a9c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int aiMesh::GetNumUVChannels </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the number of UV channels the mesh contains. </p>

</div>
</div>
<a class="anchor" id="ae39d8068a397a34e9d304d35d02396bc"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool aiMesh::HasBones </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check whether the mesh contains bones. </p>

</div>
</div>
<a class="anchor" id="a770238d33b221f251adeabc45d88eeea"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool aiMesh::HasFaces </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check whether the mesh contains faces. </p>
<p>If no special scene flags are set this should always return true </p>

</div>
</div>
<a class="anchor" id="a513ceba10c92675ebdd3f014c40ba04b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool aiMesh::HasNormals </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check whether the mesh contains normal vectors. </p>

</div>
</div>
<a class="anchor" id="a938990f4086b25fd25cf6fd1033dedbe"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool aiMesh::HasPositions </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check whether the mesh contains positions. </p>
<p>Provided no special scene flags are set (such as #AI_SCENE_FLAGS_ANIM_SKELETON_ONLY), this will always be true </p>

</div>
</div>
<a class="anchor" id="acb82fd22d17d7606db6fc35f4d979fc5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool aiMesh::HasTangentsAndBitangents </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check whether the mesh contains tangent and bitangent vectors It is not possible that it contains tangents and no bitangents (or the other way round). </p>
<p>The existence of one of them implies that the second is there, too. </p>

</div>
</div>
<a class="anchor" id="aa64469ce561a59c9edd482349125945f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool aiMesh::HasTextureCoords </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pIndex</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check whether the mesh contains a texture coordinate set. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">pIndex</td><td>Index of the texture coordinates set </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a8d81f18e0895ac7a3e62aab496f74de9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool aiMesh::HasVertexColors </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pIndex</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Check whether the mesh contains a vertex color set. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">pIndex</td><td>Index of the vertex color set </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="aca67c5f067cb0d5735611805aadeb696"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structai_anim_mesh.html">aiAnimMesh</a>** aiMesh::mAnimMeshes</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>NOT CURRENTLY IN USE. </p>
<p>Attachment meshes for this mesh, for vertex-based animation. Attachment meshes carry replacement data for some of the mesh'es vertex components (usually positions, normals). </p>

</div>
</div>
<a class="anchor" id="af04bb8da6485a98d2a452ba54b8a1039"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="vector3_8h.html#a47f446977120a9ca7d868353aad70b09">aiVector3D</a>* aiMesh::mBitangents</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Vertex bitangents. </p>
<p>The bitangent of a vertex points in the direction of the positive Y texture axis. The array contains normalized vectors, NULL if not present. The array is mNumVertices in size. </p>
<dl class="section note"><dt>Note:</dt><dd>If the mesh contains tangents, it automatically also contains bitangents. </dd></dl>

</div>
</div>
<a class="anchor" id="a7093e3acc0e931682fe899fc68a9dc06"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structai_bone.html">aiBone</a>** aiMesh::mBones</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The bones of this mesh. </p>
<p>A bone consists of a name by which it can be found in the frame hierarchy and a set of vertex weights. </p>

</div>
</div>
<a class="anchor" id="a49e7c2c61db92c3bafdbdb7d88c2cf87"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="color4_8h.html#a22423d93be0559285f5f9d895f05f32c">aiColor4D</a>* aiMesh::mColors[<a class="el" href="mesh_8h.html#a74ea1282873ac4b111b48d2380c26bdc">AI_MAX_NUMBER_OF_COLOR_SETS</a>]</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Vertex color sets. </p>
<p>A mesh may contain 0 to <a class="el" href="mesh_8h.html#a74ea1282873ac4b111b48d2380c26bdc" title="Supported number of vertex color sets per mesh.">AI_MAX_NUMBER_OF_COLOR_SETS</a> vertex colors per vertex. NULL if not present. Each array is mNumVertices in size if present. </p>

</div>
</div>
<a class="anchor" id="a6593ae5a5861f69e2576447054d01053"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structai_face.html">aiFace</a>* aiMesh::mFaces</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The faces the mesh is constructed from. </p>
<p>Each face refers to a number of vertices by their indices. This array is always present in a mesh, its size is given in mNumFaces. If the #AI_SCENE_FLAGS_NON_VERBOSE_FORMAT is NOT set each face references an unique set of vertices. </p>

</div>
</div>
<a class="anchor" id="aa2807c7ba172115203ed16047ad65f9e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int aiMesh::mMaterialIndex</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The material used by this mesh. </p>
<p>A mesh does use only a single material. If an imported model uses multiple materials, the import splits up the mesh. Use this value as index into the scene's material list. </p>

</div>
</div>
<a class="anchor" id="afccf57b16796f2e81f44d824d9b9722d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structai_string.html">aiString</a> aiMesh::mName</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Name of the mesh. </p>
<p>Meshes can be named, but this is not a requirement and leaving this field empty is totally fine. There are mainly three uses for mesh names:</p>
<ul>
<li>some formats name nodes and meshes independently.</li>
<li>importers tend to split meshes up to meet the one-material-per-mesh requirement. Assigning the same (dummy) name to each of the result meshes aids the caller at recovering the original mesh partitioning.</li>
<li>Vertex animations refer to meshes by their names. </li>
</ul>

</div>
</div>
<a class="anchor" id="acb909ff2b9aec691fc6b50ec1be2b52f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="vector3_8h.html#a47f446977120a9ca7d868353aad70b09">aiVector3D</a>* aiMesh::mNormals</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Vertex normals. </p>
<p>The array contains normalized vectors, NULL if not present. The array is mNumVertices in size. Normals are undefined for point and line primitives. A mesh consisting of points and lines only may not have normal vectors. Meshes with mixed primitive types (i.e. lines and triangles) may have normals, but the normals for vertices that are only referenced by point or line primitives are undefined and set to QNaN (WARN: qNaN compares to inequal to <em>everything</em>, even to qNaN itself. Using code like this to check whether a field is qnan is: </p>
<div class="fragment"><div class="line"><span class="preprocessor">          #define IS_QNAN(f) (f != f)</span></div>
</div><!-- fragment --><p> still dangerous because even 1.f == 1.f could evaluate to false! ( remember the subtleties of IEEE754 artithmetics). Use stuff like <code>fpclassify</code> instead. </p>
<dl class="section note"><dt>Note:</dt><dd>Normal vectors computed by <a class="el" href="namespace_assimp.html" title="Assimp&#39;s CPP-API and all internal APIs.">Assimp</a> are always unit-length. However, this needn't apply for normals that have been taken directly from the model file. </dd></dl>

</div>
</div>
<a class="anchor" id="a1692a300222b32348ae51779df4a697e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int aiMesh::mNumAnimMeshes</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>NOT CURRENTLY IN USE. </p>
<p>The number of attachment meshes </p>

</div>
</div>
<a class="anchor" id="a0f9d5425b6300e32a842a94f943fd79e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int aiMesh::mNumBones</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The number of bones this mesh contains. </p>
<p>Can be 0, in which case the mBones array is NULL. </p>

</div>
</div>
<a class="anchor" id="aeed22ee6963b79548f3877b3c905518e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int aiMesh::mNumFaces</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The number of primitives (triangles, polygons, lines) in this mesh. </p>
<p>This is also the size of the mFaces array. The maximum value for this member is <a class="el" href="mesh_8h.html#aef69217e80411f3fee5aae3dc06b68ba" title="Maximum number of faces per mesh.">AI_MAX_FACES</a>. </p>

</div>
</div>
<a class="anchor" id="a635c631a6e66d32989d6b25b2a892d86"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int aiMesh::mNumUVComponents[<a class="el" href="mesh_8h.html#a335874c5058c7f1e866eb953bf192258">AI_MAX_NUMBER_OF_TEXTURECOORDS</a>]</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Specifies the number of components for a given UV channel. </p>
<p>Up to three channels are supported (UVW, for accessing volume or cube maps). If the value is 2 for a given channel n, the component p.z of mTextureCoords[n][p] is set to 0.0f. If the value is 1 for a given channel, p.y is set to 0.0f, too. </p>
<dl class="section note"><dt>Note:</dt><dd>4D coords are not supported </dd></dl>

</div>
</div>
<a class="anchor" id="ab34b7b5941e6636f1c08f615cbb072ef"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int aiMesh::mNumVertices</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The number of vertices in this mesh. </p>
<p>This is also the size of all of the per-vertex data arrays. The maximum value for this member is <a class="el" href="mesh_8h.html#aa3997d5751b93f15e4c9d86ced093b56" title="Maximum number of vertices per mesh.">AI_MAX_VERTICES</a>. </p>

</div>
</div>
<a class="anchor" id="a99d66ac0a444068c1b252b30265cbf53"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int aiMesh::mPrimitiveTypes</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Bitwise combination of the members of the <a class="el" href="mesh_8h.html#ac352902280db7c3bd8ba64c133b7f03f" title="Enumerates the types of geometric primitives supported by Assimp.">aiPrimitiveType</a> enum. </p>
<p>This specifies which types of primitives are present in the mesh. The "SortByPrimitiveType"-Step can be used to make sure the output meshes consist of one primitive type each. </p>

</div>
</div>
<a class="anchor" id="aa653683c81c7f7465b09aee18f8d1c22"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="vector3_8h.html#a47f446977120a9ca7d868353aad70b09">aiVector3D</a>* aiMesh::mTangents</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Vertex tangents. </p>
<p>The tangent of a vertex points in the direction of the positive X texture axis. The array contains normalized vectors, NULL if not present. The array is mNumVertices in size. A mesh consisting of points and lines only may not have normal vectors. Meshes with mixed primitive types (i.e. lines and triangles) may have normals, but the normals for vertices that are only referenced by point or line primitives are undefined and set to qNaN. See the <a class="el" href="structai_mesh.html#acb909ff2b9aec691fc6b50ec1be2b52f" title="Vertex normals.">mNormals</a> member for a detailled discussion of qNaNs. </p>
<dl class="section note"><dt>Note:</dt><dd>If the mesh contains tangents, it automatically also contains bitangents. </dd></dl>

</div>
</div>
<a class="anchor" id="a802e24c0acd3a96ec0b2cd6c21e9ef57"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="vector3_8h.html#a47f446977120a9ca7d868353aad70b09">aiVector3D</a>* aiMesh::mTextureCoords[<a class="el" href="mesh_8h.html#a335874c5058c7f1e866eb953bf192258">AI_MAX_NUMBER_OF_TEXTURECOORDS</a>]</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Vertex texture coords, also known as UV channels. </p>
<p>A mesh may contain 0 to AI_MAX_NUMBER_OF_TEXTURECOORDS per vertex. NULL if not present. The array is mNumVertices in size. </p>

</div>
</div>
<a class="anchor" id="a65441c89080d9343de64515f74a64415"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="vector3_8h.html#a47f446977120a9ca7d868353aad70b09">aiVector3D</a>* aiMesh::mVertices</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Vertex positions. </p>
<p>This array is always present in a mesh. The array is mNumVertices in size. </p>

</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="mesh_8h.html">mesh.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Tue Jul 10 2012 17:55:53 for Assimp by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.1
</small></address>
</body>
</html>
